Micron Document
██████╗ ███████╗████████╗██╗██████╗ ███████╗██████╗ ██╗ █████╗
██╔══██╗██╔════╝╚══██╔══╝██║██╔══██╗██╔════╝██╔══██╗██║██╔══██╗
██████╔╝█████╗ ██║ ██║██████╔╝█████╗ ██║ ██║██║███████║
██╔══██╗██╔══╝ ██║ ██║██╔═══╝ ██╔══╝ ██║ ██║██║██╔══██║
██║ ██║███████╗ ██║ ██║██║ ███████╗██████╔╝██║██║ ██║
╚═╝ ╚═╝╚══════╝ ╚═╝ ╚═╝╚═╝ ╚══════╝╚═════╝ ╚═╝╚═╝ ╚═╝


🬧 The NomadNet Encyclopedia | Archives | Info
- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b

🔍 Search

¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

COFF
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
top
L'acronimo mwbqCOFF (dall'inglese mwbgmwbwCommon mwcaObject mwcqFile mwcgFormat) indica le mwcwspecifiche di alcuni tipi di mwdafile usati nei mwdqsistemi operativi mwdgUnix: mwdwfile eseguibili, mweafile di codice oggetto e mweqfile di libreria condivisa. Il COFF fu introdotto nello UNIX System IV e fu alla base dei formati estesi XCOFF e ECOFF, prima di essere rimpiazzato dal formato mwfqELF, introdotto con lo mwfgUNIX System V. Tuttavia il COFF e le sue varianti continuano ad essere usati in alcuni sistemi mwfwUnix-like e in mwgaMicrosoft Windows.

Contents

Storia

──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

Storia

Il formato originale Unix per i file di codice oggetto, chiamato mwhamwhqa.out, aveva una struttura molto semplice, inadeguata per tecnologie quali il debugging simbolico e le mwhwlibrerie condivise. Poiché lo sviluppo di sistemi Unix-mwialike avveniva in diverse sedi (dentro e fuori la mwiqAT&T) furono implementate diverse soluzioni per sopperire alle limitazioni di a.out.

COFF fu introdotto nello UNIX System V, prodotto dalla AT&T, per piattaforme a 32 bit non VAX quali il 3B20. I miglioramenti all'esistente formato a.out di AT&T comprendevano supporto nativo per:

• informazioni necessarie al mwjwdebugging simbolico
• librerie condivise
• meccanismo di estensioni

Tuttavia, sebbene COFF fu un miglioramento rispetto ad a.out, l'architettura era ancora troppo limitata: c'era un limite nel numero massimo di sezioni, un limite nella lunghezza dei nomi delle sezioni e il supporto all'inserzione di informazioni per il debugging simbolico non era compatibile con nuovi linguaggi come il mwkwC++. Per superare queste limitazioni AT&T con il rilascio di System V Release 4 rilasciò anche il formato ELF; mwlqIBM usò il formato XCOFF nello mwlgAIX, mwlwDEC, mwmaSGI e altri usarono il formato ECOFF; altri sistemi migliorarono il loro formati di eseguibili proprietari e non portabili ad altre piattaforme.

Mentre versioni estese di COFF continuano ad essere usate in molte piattaforme Unix-mwmglike, principalmente mwmwsistemi embedded, forse l'uso più massiccio del formato COFF oggi è quello effettuato in Windows, con il suo formato mwnaPE. Sviluppato per Windows NT, il formato PE (a volte citato come PE/COFF) usa uno schema di intestazione COFF per i file oggetto e nei file eseguibili lo schema di intestazione COFF è inserito nel più vasto schema di intestazione PE.

Caratteristiche

Il principale miglioramento di COFF rispetto ad mwoqa.out fu l'introduzione di più sezioni nominabili nel file oggetto. Diversi file oggetto possono avere diverse quantità e tipi di sezioni.

Informazioni per il debugging simbolico

Le informazioni per il mwpqdebugging simbolico dei file COFF consistono in nomi simbolici (mwpgstringhe) associati a funzioni e variabili del programma, e informazioni sui numeri di linea, usati per impostare mwpw[breakpoint] e per il tracciamento durante l'mwqqesecuzione. Il formato mwqga.out non forniva supporto nativo per il mwqwdebugging simbolico, anche se questo limite poteva essere parzialmente superato usano meccanismi come lo mwrastabs (Symbol TAble entrieS).

I nomi simbolici sono conservati nella tabella dei simboli. Ogni voce della tabella dei simboli comprende nome, classe di memorizzazione, tipo, valore e numero di sezione. Nomi corti (di otto caratteri o meno) sono salvati direttamente nella tabella dei simboli; i nomi lunghi sono salvati in forma di indirizzo che punta alla tabella delle stringhe presente alla fine dell'oggetto COFF.

La classe di memorizzazione descrive il tipo di entità che il simbolo rappresenta, che può essere C_EXT (mwsavariabile esterna), C_AUTO (variabile automatica dello mwsqmwsgstack), C_REG (variabile di mwswregistro), C_FCN (mwtafunzione)) e molte altre. Il tipo prescrive come sia da interpretare il valore associato al simbolo, ed è possibile riconoscere ognuno dei tipi del mwtqC.

Quando mwtwcompilato con le opzioni appropriate, un file oggetto COFF contiene informazioni sul numero di linea per ogni possibile mwuabreakpoint presente nella sezione mwuqtext del file oggetto. Le informazioni sui numeri di linea sono in due forme: nella prima, per ogni possibile mwugbreakpoint la voce nella tabella dei numeri di linea contiene l'indirizzo del mwuwbreakpoint e il corrispondente numero di linea. Nella seconda forma, la voce indica a sua volta una voce della tabella dei simboli che rappresenta l'inizio di una funzione, rendendo così possibile l'impostazione di un mwvabreakpoint usando il nome della funzione stessa.

Si noti che il formato COFF non era capace di rappresentare numeri di riga o simboli di debug per sorgente incluso con i file di header rendendo virtualmente inutili le informazioni di debug del file COFF senza l'uso di estensioni incompatibili.

Indirizzi virtuali relativi (RVA)

Quando viene generato un file COFF, di solito non si sa in quale parte della mwwamemoria esso verrà caricato. L'mwwqindirizzo virtuale dove il primo mwwgmwwwbyte del file sarà caricato è chiamato mwxaindirizzo di base del file immagine. Il resto del file non sarà necessariamente presente in un blocco di memoria contiguo, ma in sezioni di memoria differenti.

L'indirizzo RVA (mwxgRelative Virtual Address) non deve essere confuso con i comuni indirizzi virtuali. Un indirizzo RVA è l'indirizzo virtuale di un oggetto del file una volta che esso è stato caricato in memoria, meno l'indirizzo di base del file immagine. Se il file deve essere mappato fedelmente dal mwxwdisco alla memoria, l'RVA sarà identico all'offset nel file, ma questo in realtà è piuttosto insolito.

Notare che il termine RVA è usato solo per gli oggetti nel file immagine. Una volta caricati in memoria, viene aggiunto l'indirizzo di base del file immagine, e sono usati gli ordinari indirizzi virtuali.

Bibliografia

• mwza(EN) Gintaras Gircys, Understanding and Using COFF, O Reilly and Associates, 1988, ISBN 0-937175-31-5.

Collegamenti esterni

• mwaa(EN) Inside Windows - An In-Depth Look into the Win32 Portable Executable File Format, su msdn.microsoft.com.
• mwag(EN) coff.h, su www-scf.usc.edu. URL consultato il 23 luglio 2014 (archiviato dall'url originale il 23 luglio 2014).
• mwba(EN) Common Object File Format (COFF), su support.microsoft.com.